package com.googlecode.milib.util {
	import flash.text.TextField;

	/**
	 * @author Marek Brun @ MindChili
	 */
	public class MLTextFieldUtil {
		
		public static function getNumberOfLines(tf:TextField):int {
			var orgText:String=tf.htmlText;
			var oldBottomScrollV:int=-1;
			while(tf.bottomScrollV!=oldBottomScrollV){
				oldBottomScrollV=tf.bottomScrollV;
				tf.appendText(' \n');
			}
			var lines:int=tf.bottomScrollV-tf.scrollV+1;
			tf.htmlText=orgText;
			return lines;
		}
		
		public static function getPagedTextByTextField(text:String, tf:TextField):Array {
			var lines:int=getNumberOfLines(tf);
			var orgText:String=tf.htmlText;
			tf.htmlText=text;
			var textsLines:Array=[], pagedTexts:Array=[], lineText:String, countPages:uint=0;
			for(var i:uint=0;true;i++){
				try{
					lineText=tf.getLineText(i);
				}catch(e:*){
					pagedTexts.push(textsLines.join(''));
					break;
				}
				if(countPages+1>lines){
					countPages=0;
					textsLines[textsLines.length-1]=textsLines[textsLines.length-1].split('\n').join('').split('\r').join('');
					pagedTexts.push(textsLines.join(''));
					textsLines=[];
				}
				textsLines.push(lineText);
				countPages++;
				
			}
			if(pagedTexts[pagedTexts.length-1].length<2){
				pagedTexts.pop();
			}
			tf.htmlText=orgText;
			return pagedTexts;
		}
		
	}
}
